Intelligent device wakeup

ABSTRACT

In one general aspect, a method can include determining that a computing device is in a stationary position for a predetermined time, placing the computing device in a first power mode, detecting input from at least one sensor included in the computing device, identifying at least one application to launch on the computing device based on the detected input and on a heuristic-based usage pattern for the computing device, and transitioning the computing device from the first power mode to a second power mode based on the detected input. The transitioning can include automatically launching the at least one application on the computing device. The at least one application can provide content for display on a display device included in the computing device.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of, and claims priority under 35U.S.C. § 120 to, U.S. application Ser. No. 15/894,658, filed on Feb. 12,2018, entitled “INTELLIGENT DEVICE WAKEUP,” which is a continuation of,and claims priority under 35 U.S.C. § 120 to, U.S. application Ser. No.14/871,192, filed on Sep. 30, 2015, entitled “INTELLIGENT DEVICEWAKEUP,” which claims priority under 35 U.S.C. § 119(e)(1), to U.S.Provisional Application Ser. No. 62/059,309, filed on Oct. 3, 2014, theentire contents of all of which are incorporated herein by reference.

TECHNICAL FIELD

This description generally relates to computing devices. Thedescription, in particular, relates to waking up a computing device froma low power state to an active state.

BACKGROUND

A computing device can include one or more sensors. The sensors canprovide data and information related to a context, current state, orcondition of the computing device. In addition or in the alternative,the sensors can provide data and information related to userinteractions with the computing device. For example, one or moreaccelerometers can provide data indicative of movement and/ororientation of the computing device. Touch sensors (e.g., a touchscreen,a touchpad, a trackpad) can detect contact of a user or conductiveobject with a surface of the sensor. In addition or in the alternative,the computing device can include one or more built-in devices that canbe used to identify a context for the computing device. For example, acomputing device can include a time of day clock.

Keeping the multitude of sensors and other built-in devices operationalon the computing device in order to provide data and informationindicative of a state and/or context of the computing device can consumemeasurable power. The amount of power consumed can be significant whenthe computing device is operating under battery power. Batteries as wellas the sensors and built-in devices, however, are becoming increasingmore efficient, reliable, and affordable. As such, the sensors andbuilt-in devices are becoming valuable tools that can be used todetermine the context of a computing device and the interactions of auser with the computing device in the determined context.

SUMMARY

In one general aspect, a method can include determining that a computingdevice is in a stationary position for a predetermined time, placing thecomputing device in a first power mode, detecting input from at leastone sensor included in the computing device, identifying at least oneapplication to launch on the computing device based on the detectedinput and on a heuristic-based usage pattern for the computing device,and transitioning the computing device from the first power mode to asecond power mode based on the detected input. The transitioning caninclude automatically launching the at least one application on thecomputing device. The at least one application can provide content fordisplay on a display device included in the computing device.

Example implementations may include one or more of the followingfeatures. For instance, the first power mode can be one of a sleep modeand a hibernate mode. The second power mode can be an active powerstate. Determining that a computing device is in a stationary positionfor a predetermined time can include not receiving input from at leasttwo or more of an accelerometer, an input device, a motion sensor, aproximity sensor, and a touch sensor. Detecting input from at least onesensor can include detecting vibrations occurring in an ambientenvironment of the computing device. Detecting input from at least onesensor can include detecting, by at least one proximity sensor, aproximity of a user to the computing device. Identifying the at leastone application to launch on the computing device can be based oninformation obtained from an activity monitor and information obtainedfrom at least one other type of device. The information obtained fromthe activity monitor can include user provided information. Theinformation obtained from the activity monitor can include informationfor patterns of usage of the computing device. The method can furtherinclude providing the detected input to a power manager included in thecomputing device. The power manager can be configured to obtaininformation from an activity monitor, obtain information from at leastone other type of device included in the computing device, and determinethe second power mode based on the detected input, the obtainedinformation from the activity monitor, and the obtain information fromthe at least one other type of device. Obtaining information from anactivity monitor can include obtaining user provided information.Determining the second power mode can be further based on the userprovided information. Obtaining information from an activity monitor caninclude obtaining information for patterns of usage of the computingdevice. Determining the second power mode can be further based on thepatterns of usage of the computing device. Obtaining information from atleast one other type of device can include obtaining information fromone of a real-time clock, a timer, an audio system, and at least oneinput device.

In another general aspect, a computing device can include a plurality ofsensors configured to provide data indicative of an ambient environmentof the computing device, a power manager configured to receive sensordata indicating a proximity of a user to the computing device, identifya power mode for the computing device based on the received sensor data,and based on the received sensor data transition the computing devicefrom a first power mode to a second power mode, and automatically launchat least one application on the computing device. The computing devicecan further include a display device configured to display contentprovided by the at least one application.

Example implementations may include one or more of the followingfeatures. For instance, the computing device can further include areal-time clock (RTC) configured to provide data indicative of time anddate information. The power manager can be further configured to receivethe RTC data, and identify a power mode for the computing device basedon the received sensor data and the RTC data. The computing device canfurther include a memory configured to store information regarding anoperating state of the computing device. Transitioning the computingdevice from a first power mode to a second power mode can includerestoring an operating state of the computing device using the storedinformation. The first power mode can be one of a sleep mode and ahibernate mode. The second power mode can be an active power state. Thepower manager can be configured to identify the at least one applicationto launch on the computing device based on at least one of the receivedsensor data, information obtained from an activity monitor, andinformation obtained from at least one other type of device.

In yet another general aspect, a non-transitory, machine-readable mediumhaving instructions stored thereon, the instructions, when executed by aprocessor, cause a computing device to determine that a computing deviceis in a stationary position for a predetermined time, place thecomputing device in a first power mode, detect input from at least onesensor included in the computing device, identify at least oneapplication to launch on the computing device based on the detectedinput and on a heuristic-based usage pattern for the computing device,and transition the computing device from the first power mode to asecond power mode based on the detected input. The transitioningincludes automatically launching the at least one application on thecomputing device, the at least one application providing content fordisplay on a display device included in the computing device.

The details of one or more implementations are set forth in theaccompanying drawings and the description below. Other features will beapparent from the description and drawings, and from the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a diagram that illustrates an example system that includesexample computing devices where each computing device includes sensorsand other types of devices that can provide data and information about acontext or operating state of a computing device.

FIG. 2 is a block diagram of example modules, components and devicesthat can be included in a computing device.

FIG. 3A is a diagram that shows an illustration of a user placing acomputing device on a table.

FIG. 3B is a diagram that shows an illustration of a display deviceincluded in a computing device.

FIG. 3C is a diagram that shows an illustration of a user moving/walkingtowards a table and content displayed on a display device of a computingdevice placed on the table.

FIG. 4 is a flowchart that illustrates a method for waking up acomputing device.

FIG. 5 shows an example of a computer device and a mobile computerdevice that can be used to implement the techniques described here.

Like reference symbols in the various drawings indicate like elements.

DETAILED DESCRIPTION

A computing device can use sensor-based context awareness to enhanceinteractions of a user with the computing device. The computing devicecan include a plurality of sensors that can provide data and informationrelated to a state, condition, or context of the computing device. Thecomputing device can also include other types of devices (e.g., inputdevices, a real-time clock, timers) that can also provide data andinformation about the context or operating state of the computingdevice. The data and information can be provided to circuitry andsoftware included in the computing device. The circuitry and softwarecan process and/or interpret the data and information and can determinean operating state (operating mode) for the computing device based onpast interactions of the user with the computing device when in theidentified context, state, or condition. The computing device can thenbe automatically placed into the operating mode. Sensor-based contextawareness can enhance the experience of the user with the computingdevice by having the computing device predict and immediately satisfythe needs of the user.

For example, based on sensors and other types of devices providingcertain data and information, the computing device can determine aparticular context and/or state of the computing device. Based on arecord of prior interactions of a user with the computing device whenthe computing device is in the particular context and/or state, thecomputing device can automatically wake up from a low power state andenter a predetermined operating mode. The predetermined operating modecan be an operating mode that the user may have selectively entered whenthe computing device was in the particular context and/or state whenwaking up from the low power state. Sensor-based context awareness canenhance wakeup and battery life behavior of a computing device byleveraging the data and information provided by sensors and otherdevices included in the computing device.

FIG. 1 is a diagram that illustrates an example system 100 that includesexample computing devices 102 a-d. The computing devices 102 a-d caneach include sensors and other types of devices discussed herein thatcan provide data and information about a context or operating state of acomputing device.

For example, computing device 102 a can be a mobile phone, a smartphone,a personal digital assistant, or other type of mobile computing device.For example, computing device 102 b can be a laptop or notebookcomputer. For example, computing device 102 c can be a tablet computer.For example, the computing device 102 d can be a desktop computer thatincludes a display device 122, a keyboard 124, and a mouse 126 or othertype of pointing device. The computing devices 102 a-d can communicate,using a network 116, with other computing devices or computer systems.In some implementations, the computing devices 102 a-d can performclient-side operations, as discussed in further detail herein.

The system 100 includes a computer system 130 that can include one ormore computing devices (e.g., server 142 a) and one or morecomputer-readable storage devices (e.g., database 142 b). The server 142a can include one or more processors (e.g., server CPU 132), and one ormore memory devices (e.g., server memory 134). The computing devices 102a-d can communicate with the computer system 130 (and the computersystem 130 can communicate with the computing devices 102 a-d) using anetwork 116. The server 142 a can execute a server O/S 136, and one ormore server applications 138. In some implementations, the computersystem 130 can represent multiple computing devices (e.g., servers) andmultiple computer-readable storage devices (e.g., databases) workingtogether to perform server-side operations. In some implementations, asingle proprietor can provide one or more of the servers. The serverscan include, but are not limited to, information servers, contentservers, search servers, web crawler servers, marketplace servers, andmail servers. The applications 138 can include, but are not limited to,web searching applications, electronic mail applications, andapplications that provide map services, weather reports, and news itemsand articles.

In some implementations, the network 116 can be a public communicationsnetwork (e.g., the Internet, cellular data network, dialup modems over atelephone network) or a private communications network (e.g., privateLAN, leased lines). In some implementations, the computing devices 102a-d can communicate with the network 116 using one or more high-speedwired and/or wireless communications protocols (e.g., 802.11 variations,WiFi, Bluetooth, Transmission Control Protocol/Internet Protocol(TCP/IP), Ethernet, IEEE 802.3, etc.).

Depending on a current operating state (operating mode) of a computingdevice (e.g., the computing devices 102 a-d), the computing device maycommunicate with the computer system 130 using the network 116,requesting particular data and information relevant to the currentoperating state of the computing device. The computer system 130 canprovide data and information to the computing device for use by thecomputing device. In some cases, the computing device may use the dataand information when automatically waking up from a low power state andentering a predetermined operating mode based data and informationprovided by one or more sensors included in the computing device.

The computer system 130 can manage/maintain information and data for auser of one or more of the computing devices 102 a-d. For example, thecomputer system 130 can be a mail server that can manage/maintainelectronic mail (email) messages for a user. An email applicationexecuting on a computing device (e.g., the computing device 102 a) canprovide and display email messages on the display device 120 included inthe computing device 102 a. In some implementations, the computingdevice 102 a can request the email messages from the computer system 130by way of the network 116. The computing device 102 a receive the emailmessages, store them locally on the computing device 102 a (e.g., inmemory included in the computing device 102 a), and provide the emailmessages to the email application, which can then display the emailmessages to the user.

FIG. 2 is a block diagram of example modules, components and devicesthat can be included in a computing device 200. For example, the examplemodules, components and devices (also referred to herein as elements)can be included in the computing device 102 a, the computing device 102b, the computing device 102 c, and/or the computing device 102 d asshown in FIG. 1.

The elements shown in FIG. 2 are for illustrative purposes and by way ofexample. In some implementations, a computing device may include feweror additional modules, components and/or devices. In someimplementations, a computing device may substitute certain elements withother elements. The various elements of the computing device 200 may beoperationally coupled to one another. For example, one or moreprocessor(s) 205 of the computing device 200 may be operationallycoupled to one or more of the other elements of the computing device 200using a single bus or multiple busses. The processor(s) 205 can controlthe operation of the computing device 200 by controlling/interactingwith the modules, components and/or devices included in the computingdevice 200.

The computing device 200 can execute an operating system (O/S) 235. Areal-time clock (RTC) 210 can provide time and date information (e.g.,the time of day, the day of the week, etc.). The computing device 200can use a timer 215 to set a particular time between event occurrenceson the computing device 200. The computing device 200 can use the timer215 to initiate an event at certain time after another detected event,condition, or operating state of the computing device 200.

The computing device 200 includes an audio system 220. The audio system220 can include one or more audio output devices (e.g., speakers). Theaudio system 220 can include an audio input device (e.g., a microphone).For example, the audio system 220 can accept audio input as spoken words(e.g., voice commands) and process the spoken words as input commandsfor processing by the processor(s) 205. The processed audio input canallow for audio control of the computing device 200.

For example, a user can provide voice commands to the computing device200. The voice commands can initiate an action on the computing device200. For example, the user can use voice commands to activate a camera292 included in the computing device 200. In another example, the voicecommands can activate a calendar application included in the computingdevice 200.

The computing device 200 includes input device(s) 250. The inputdevice(s) 250 can include, but are not limited to, a touchscreendisplay, a keyboard, a mouse, a trackpad, a touchpad, a pointing stick,one or more mouse buttons, a trackball, a joystick, and other types ofinput devices. The computing device 200 includes a display device 260.The display device 260 can include, but is not limited to, a liquidcrystal display (LCD), a light emitting diode (LED) display, and aplasma display. In some implementations, the display device 260 can be atouchscreen. The computing device 200 includes output device(s) 240. Theoutput device(s) 240 can include, but are not limited to, auxiliarylighting devices (e.g., LEDs), and haptic feedback devices (e.g., avibration motor).

The computing device 200 includes memory 230. In some implementations,the memory 230 can be separate volatile (e.g., random-access memory(RAM)) and non-volatile memory (e.g., a hard disk drive and/or a flashmemory drive) elements. In some implementations, sub-elements of thememory 230 can include volatile and non-volatile memory.

A communications module 233 can provide communications capability forthe computing device 200. For example, the computing device 200 may becapable of communicating with a network (e.g., the network 116 inFIG. 1) using one or more wired and/or wireless communicationinterfaces/protocols, such as for example, 802.11 variations, WiFi,Bluetooth, Transmission Control Protocol/Internet Protocol (TCP/IP),Ethernet, and IEEE 802.3. In another example, the computing device 200may be a mobile communications device (e.g., a mobile phone, a cellphone) capable of communicating over a cellular network.

The computing device 200 can execute the O/S 235 and one or moreapplications (e.g., a web browser application) that can display a userinterface (UI) on the display device 260. In some implementations, a webbrowser application can include or be associated with one or more webapplications. The web application can be executed/interpreted by the webbrowser application. The web application executed by the web browserapplication can include code written in a scripting language, such as,JavaScript, VBScript, ActionScript, or other scripting languages. Forexample, a web application can be an email application that can beexecuted/interpreted by the web browser application.

A natively operating application 285 can be an application that is codedusing only web technology (defined here as code that can be implementeddirectly by a web browser application), such as JavaScript,ActionScript, HTML, or CSS. For example, the computing device 200 candownload and install the natively operating application 285 from amarketplace server using a web browser application. The nativelyoperating application 285 may operate using a runtime 255. The nativelyoperating application 285 may be configured to be executed directly bythe processor(s) 205 or by the O/S 235, using the runtime 255. Becausethe natively operating application 285 is coded using web technologies,no compilation step is required.

A native application 290 can include machine executable code and can beconfigured to be executed directly via the O/S 235. A web application265 may be incapable of execution or display without the aid of a webbrowser. Thus, web applications can be run inside a browser with adedicated user interface, and typically provide functionality and anexperience that is more rich and interactive than a standalone websitebut are less cumbersome and monolithic than a native application.Examples of web applications can include, but are not limited to, games,photo editors, and video players that can run inside the web browserapplication. The web application 265 can provide a dedicated UI fordisplay on the display device 260.

The processor(s) 205 can execute an application on the computing device200. In some cases, an application can be integrated into the O/S 235.For example, the application can display a user interface (UI) on adisplay device 260 included in the computing device 200. The applicationcan cause the computing device 200 to perform one or more actions on thecomputing device 200 that can include interactions with one or more ofinput device(s) 250, output device(s) 240, and the display device 260.

The computing device 200 can operate and/or implement a number ofdifferent power states. The power states can include, but are notlimited to, one or more active power states, a suspend-to-RAM powerstate (e.g., a suspended power state), a suspend-to-disk power state(e.g., a hibernation power state) and a powered-off power state.

The one or more active power states can include a display-on activestate and a display-off active state. In a display-on active state, thedisplay device 260 of the computing device 200 is active (powered on)and can render visual content generated by one or more applicationsrunning on the computing device 200 (e.g., user application interfaces,video content being played by the computing device 200). In adisplay-off active state, the display device 260 is powered off. In thedisplay-off active state, the other elements of the computing device 200can operate in substantially the same manner as in the display-on activestate. Because computing device displays, such as the display device260, can consume a substantial amount of power when active, operatingthe computing device 200 in the display-off power state can consumesignificantly less power than operating the computing device 200 in thedisplay-on active state. This can be important especially when a batteryis providing power to the computing device 200.

The suspend-to-RAM power state of the computing device 200 can also bereferred to as a standby mode, a sleep mode, or a suspend mode ofoperation of the computing device 200. In a suspend-to-RAM power state,the random access memory (RAM) receives sufficient power to retaininformation regarding an operating state of the computing device 200.The computing device 200 reduces or eliminates power to unneededelements (components or parts) of the computing device 200. For example,a hard disk(s) stops spinning, the display device is placed into adisplay-off power state, and power is removed from peripheral orexternal devices. When the computing device 200 is in a sleep mode, manyof the processing functions of the computing device 200 are powereddown. In addition, the computing device 200 uses a small amount of powerto preserve the contents of RAM, to maintain power to the sensors 270 inorder for the sensors to remain active, and to support waking up thecomputing device 200 from the suspend-to-RAM power state into an activepower state.

The suspend-to-disk power state of the computing device 200 can also bereferred to as a hibernate mode, a safe sleep mode, or a suspend-to-diskmode. In a suspend-to-disk power state, the computing device 200 canwrite the contents of the RAM included in the computing device 200 tonon-volatile memory (non-volatile storage) (e.g., a hard disk, a file ona FLASH drive, a separate memory partition) before entering thesuspend-to-disk power state. When the computing device 200 is restarted,the computing device 200 reloads the data that was previously written tothe non-volatile memory, restoring the computing device 200 to the statethat it was in when the suspend-to-disk power state was entered. Toenable use of a suspend-to-disk power state, the hard disk (or othernon-volatile memory) must have sufficient free space to store allnon-replaceable contents of RAM. When the computing device 200 is in thehibernation mode, the computing device 200 can consume a minimal amountof power, less power than when the computing device 200 is in a sleepmode. In addition, however, the computing device 200 maintains power tothe sensors 270 in order for the sensors to remain active, and tosupport waking up the computing device 200 from the suspend-to-diskpower state into an active power state.

The hibernate mode and the sleep mode can be collectively referred to aslow power modes. During the hibernate mode and the sleep mode, thecomputing device 200 can decide/determine, based on data (information,events) detected by the sensors 270 and/or based on information (data)provided by the input device(s) 250, the real-time clock 210, the timer215 and the audio system 220, to change a power state of the computingdevice 200 (e.g., wake up the computing device 200) in accordance withthe techniques described herein. In addition, or in the alternative,during the suspend-to-RAM power state and/or the suspend-to-disk powerstate, the computing device 200 can perform one or more actions and/orrun one or more applications in preparation for changing the power stateof the computing device 200 in accordance with the techniques describedherein. For example, the computing device 200 may need to enter a powerstate that provides power to or increases the power to the processor(s)205, the operating system 235, and the communications module 233 inaccordance with the techniques described herein.

A power manager 225 can manage the process of transitioning thecomputing device 200 between power states (from one power state toanother). For example, the power manager 225 can include a power managercontroller 227. The power manager controller 227 can control (interactwith, signal) one or more elements of the computing device 200 in orderto initiate or cause a desired change in the power state of thecomputing device 200. The change in power state can be based on one ormore signals (information or data) provided by (received from) the otherelements of the computing device 200 (e.g., sensors 270, the inputdevice(s) 250, the real-time clock 210, the timer 215, the audio system220).

The power manager 225 can monitor the elements of the computing device200 to ensure the completion of any operations or functions that areassociated with the transition between power states of the computingdevice 200. For example, if the computing device 200 is transitioningfrom an active power state to a sleep mode, a hibernation mode, or anoff state, the power manager 225 may monitor the various elements of thecomputing device 200 to ensure that any housekeeping operations arecompleted before allowing the computing device 200 to initiate thetransition. For example, the power manager 225 can ensure that operatingstate information is saved for use when the computing device 200 isreturned to an active power state.

The sensors 270 can detect the occurrence of certain events, such aschanges in a physical orientation of the computing device 200 and/orchanges in an ambient environment of the computing device 200. Inresponse to detecting the certain events, the sensors 270 can theprovide data/information to the power manager controller 227 (and/or theprocessor(s) 205) about the detected events. In the computing device200, the power manager 225 (e.g., using the power manager controller227) can select a power state for the computing device 200 and caninitiate a transition of the computing device 200 to the selected powerstate. For example, while transitioning the computing device 200 from ahibernate mode or a sleep mode, to an active power state, the computingdevice 200 can automatically execute one or more applications,preparing/readying the computing device 200 for use by the user once thecomputing device 200 is in the active power state.

The sensors 270 can detect the occurrence of various events and canprovide data/information regarding the events to the power manager 225.As shown in the example in FIG. 2, the sensors 270 can include agyrometer (gyroscope) 271, accelerometer(s) 272, a light sensor 273, atemperature sensor 274, a location sensor(s) 275, biosensor(s) 276,environment sensor(s) 277, motion sensor(s) 278, proximity sensor(s)279, and touch sensor(s) 281. In some implementations, other types ofsensors may be included in the sensors 270, while in otherimplementations, one or more of the sensors 270 shown in FIG. 2 may beeliminated.

The gyrometer 271 can detect changes in a physical orientation of thecomputing device 200 (e.g., between a vertical orientation and ahorizontal orientation). The gyrometer 271 can determine the roll, pitchand yaw of the computing device 200. The accelerometer(s) 272 can detectchanges in vibrations, or patterns of vibrations occurring in an ambientenvironment of the computing device 200. Footsteps of a person orpersons walking near the computing device 200 or movement of thecomputing device 200 may cause the vibrations. In addition or in thealternative, the accelerometer(s) 272 can measure a force ofacceleration caused by movement of the computing device 200 or bygravity. For example, the accelerometer(s) 272 may detect the computingdevice 200 is falling to the ground or otherwise being dropped. Thedetection of the computing device 200 being dropped can be stores on thecomputing device 200 (e.g., in the memory 230) as a user statistic.

The light sensor 273 can detect changes in a measured light intensity inthe ambient environment of the computing device 200. Lights being turnedon or off, or removing the computing device 200 from or placing thecomputing device 200 into a carrying case can cause changes in ameasured light intensity. The temperature sensor 274 can detect changesin a measured temperature in the ambient environment of the computingdevice 200. Turning a climate control system on or off, or removing thecomputing device 200 from a carrying case can cause a change in ameasured temperature.

The location sensor(s) 275 can detect changes in a physical location ofthe computing device 200, such as may occur if a user is traveling withthe computing device 200. In some implementations, the locationsensor(s) 275 can include a global positioning system (GPS). In someimplementations, the location sensor(s) 275 can interface with thecommunications module 233 and can operate based on WiFi or cellularcommunication signals (e.g., using triangulation or other approaches).The computing device 200 can use this approach for determining locationin addition to, or in place of a GPS.

The biosensor(s) 276 can include, but are not limited to, fingerprintsensors, heart rate sensors, glucose sensors, and odor detectors orsensors. The environment sensor(s) 277 can include, but are not limitedto, an altimeter, a barometer, a relative humidity sensor, and a stepsensor. For example, the altimeter can detect an altitude associatedwith the computing device 200. Based on the detected altitude, thecomputing device 200, when waking up from a hibernate mode or a sleepmode to an active power state, may be placed in an airplane mode ofoperation, disabling cellular communication functions. In anotherexample, the step detector may detect movement of a user of thecomputing device 200 (e.g., the user is walking with the computingdevice 200). The computing device 200, when waking up from a hibernatemode or a sleep mode to an active power state, can also activate anemail application in preparation for the user to view email when theyfinish walking to a particular destination.

The proximity sensor(s) 279 can include one or more sensors capable ofdetermining a proximity of a user to the computing device 200 withoutthe user needing to physically contact the computing device 200. Exampleproximity sensors can include, but are not limited to, capacitivesensors, inductive sensors, ultrasonic sensors, and infrared sensors.For example, a capacitive sensor can detect the proximity of a body partof the user or other conductive object to the computing device 200.Based on the detected proximity, the computing device 200 can wake upfrom a hibernate mode or a sleep mode to an active power state and candisplay on the display device 260 information the user may be interestedin seeing, such as the current time, the local weather report, and abreaking news headline.

The touch sensor(s) 281 can include one or more sensors capable ofdetecting a physical contact (e.g., touching, holding, squeezing) of auser with the computing device 200. For example, touching/contacting thecomputing device 200 in a particular location or squeezing the computingdevice 200 can wakeup the computing device 200 from a hibernate mode ora sleep mode to an active power state and can activate a flashlightapplication on the computing device 200. In addition,touching/contacting the computing device 200 in the particular locationor squeezing the computing device 200 again can de-activate theflashlight application and place the computing device 200 back into ahibernate mode or a sleep mode.

Each of the sensors 270 can selectively provide data/information aboutdetected events to the power manager 225 when the computing device 200is in a low power state, an active power state, and/or when thecomputing device 200 is transitioning between power states. Thedetermination of the sub-set of the sensors 270 that provide informationcan be based on power consumption. For example, all of the sensors 270can be active when the computing device 200 is in an active power state.A first sub-set of the sensors 270 (less than all of the sensors 270)may be active when the computing device 200 is in a sleep mode. A secondsub-set of the sensors 270 (that is smaller than the first sub-set ofthe sensors 270) may be active when the computing device 200 is in ahibernate mode. In some implementations, the gyrometer 271, theaccelerometer(s) 272, the light sensor 273, the temperature sensor 274,the biosensor(s) 276, the environment sensor(s) 277, the motionsensor(s) 278, the proximity sensors(s) and the touch sensor(s) 281 mayprovide data/information to the power manager 225 regardless of thepower state of the computing device 200. The location sensor(s) 275,however, may provide location information to the power manager 225 whenthe computing device 200 is in an active power state. In someimplementations, a location of the computing device 200 may bedetermined by the location sensor(s) 275 in response to the powermanager controller 227 being activated (e.g., by an event detected byone of the other sensors 270). Information regarding events detected bythe sensors 270 that is provided to the power manager 225 may be used bythe power manager 225 to generate a heuristic-based usage pattern forthe computing device 200. The power manager 225 can provide the usagepattern to a prediction module 295.

The computing device 200 can use the prediction module 295 to improvepower management for the computing device 200. The computing device 200wakeup and battery life behavior can be enhanced by leveraging thedata/information provided by the sensors 270, as well as the real-timeclock 210, the timer 215, the audio system 220, and an activity monitor245 as well as past user-based behavior when interacting with thecomputing device 200 to enhance a user's experience when using thecomputing device 200, such as by using the techniques described herein.Based on information provided by the sensors 270, the power manager 225may automatically wakeup the computing device 200 from a hibernate modeor sleep mode and automatically initiate or launch an application on thecomputing device 200 based on past usage of the computing device 200 bythe user. This can reduce, or eliminate the amount of time a user has towait before being able to begin using a computing device. In comparison,a user would first interact with the computing device (e.g., using aninput device) to initiate a power state transition and then interactagain with the computing device to launch one or more applications.

In some implementations, the computing device 200 may use thedata/information regarding events detected by the sensors 270 alone, orin combination with each other and/or along with data/informationprovided by the real-time clock 210, the timer 215, the audio system220, and the usage pattern information included the activity monitor245. In some implementations, the activity monitor 245 can monitor usagepatterns of the computing device 200 (e.g., times when the computingdevice 200 is typically used and how the computing device 200 istypically used). The activity monitor can keep track (keep a record) ofsuch patterns.

The activity monitor 245 includes user provided information 247. Forexample, the user provided information 247 can include out-of-officenotices and calendar information (e.g., scheduled events, meetings,appointments, vacations, or otherwise). The activity monitor 245 caninclude usage pattern data/information for the computing device 200. Aprediction module 295 can use the usage pattern data/information whendetermining one or more actions or activities to perform on thecomputing device 200 based on data/information received from the sensors270 when transitioning between power states.

An algorithm executed by a computing device 200 can “learn” (e.g., learnwhile in a learning mode, learn in response to multiple repeatedinteractions over a period of time) to associate certain sensorinformation, data and/or events received while the computing device 200is in a particular state with actions performed by the computing device.A user of the computing device 200 may be provided with an opportunityto control whether programs or features included in the computing device200 may collect this information.

For example, the algorithm can learn that when a computing device isplaced in a stationary position after a certain time of day (11:00 pm),the computing device should be placed in a hibernate mode and in a quietoperating mode (e.g., no audio feedback, no audio warnings, the deviceis silenced).

In another example, the algorithm can learn that when a computing deviceis placed in a stationary position at another time of day (e.g., 6:00pm), the user will more than likely not interact with the computerdevice for approximately one hour. The approximate one hour timeframecan be considered downtime for the computing device. The computingdevice, during the downtime, can re-synchronize (re-sync) the dataincluded on the computing device with data include on a server remotefrom the computing device. For example, the computing device (e.g.,computing device 102 a-d) can connect to the server 142 a using thenetwork 116 in order to re-sync the data included on the computingdevice (e.g., download email messages).

The sensors 270 and input device(s) 250 can provide gesture informationto the computing device 200. A user may wave a hand over the computingdevice 200 and the proximity sensor(s) can detect this particulargesture. The user may make contact with/touch the computing device 200.A touchscreen and/or the touch sensor(s) 281 included in the computingdevice 200 can detect the particular type of touch (a stationary fixedtouch with a certain applied pressure at a certain point or area of thecomputing device 200, a holding and squeezing of the computing device200, a finger swipe across a touch-sensitive surface (e.g., atouchscreen, a touchpad, a trackpad) of the computing device 200) andbased on the detected type of touch can initiate a particular action onthe computing device.

For example, the computing device 200 can recognize particular detectedgestures as child-specific gestures. When the child-specific gesturesare detected, the computing device 200 can enter a child-specific modeof operation.

The detected gestures when a user is interacting with the sensor(s) 270and input device(s) 250 can be used by the computing device 200 todetermine how a user may be interacting with the computing device 200.An operating mode of the computing device 200 can be customized based onthe detected gestures. For example, appropriate tracking applicationsand recommendation applications can be run. In addition or in thealternative, a dashboard displaying information to the user can becustomized based on the detected gestures. The detected gestures canalso be used as input to an application (e.g., a game application).

In some implementations, an application running on the computing device200 can activate and use information provided by the sensor(s) 270 andthe input device(s) 250 to customize the use of the application. Forexample, an audio application can receive location information from thelocation sensor(s) 275 and ambient noise from a microphone included inthe audio system 220. Based on this information, the audio applicationcan adjust preferences for the application across the computing devices120 a-d. In another example, an application can receive proximitydata/information from the proximity sensor(s). The application can usethe proximity data to determine the proximity of one or more users tothe computing device 200. The application can use the proximity data toadjust a functionality of the application.

In some implementations, two or more of the elements included in thecomputing device 200 may be combined into a single element. For example,the power manager 225, or portions of the power manager 225, can beincluded as part of the O/S 235. In some implementations, the powermanager 225, the power manager controller 227, and the activity monitor245 can be implemented in firmware included in the computing device 200.In some implementations, the functions of the power manager 225, asdescribe herein, may be implemented in other fashions by one or moreother elements of the computing device 200.

FIG. 3A is a diagram that shows an illustration of a user 302 placingthe computing device 200 on a table 304. FIG. 3B is a diagram that showsan illustration of the display device 260 included in the computingdevice 200. FIG. 3C is a diagram that shows an illustration of the user302 moving/walking towards the table 304 and content 308 displayed onthe display device 260 of the computing device 200.

FIG. 4 is a flowchart that illustrates a method 400 for waking up acomputing device. In some implementations, the systems described hereincan implement the method 400. For example, the method 400 can bedescribed referring to FIGS. 1, 2, and 3A-C.

The method 400 determines that a computing device has remainedstationary for a predetermined time (block 402). Referring to FIGS. 2and 3A, the user 302 places the computing device 200 on the table 304.The user 302 walks away, leaving the computing device 200 on the table304. FIG. 3B shows that the display device 260 of the computing device200 is in a display-off active state (the display device 260 is notdisplaying any content). For example, the computing device 200, usinginformation and data provided by the accelerometer(s) 272, the inputdevice(s) 250, the motion sensor(s) 278, the proximity sensor(s), thetouch sensor(s) 281 and the real-time clock 210 determines that thecomputing device 200 has remained in a stationary position for apredetermined period of time (e.g., 15 minutes). The computing device200 makes this determination based on not receiving any input, data,and/or information from the accelerometer(s) 272, the input device(s)250, the motion sensor(s) 278, the proximity sensor(s), and the touchsensor(s) 281.

Based on determining that the computing device has remained stationaryfor a predetermined period of time, the computing device is placed in afirst power mode (e.g., a sleep mode, a hibernate mode, or a mode wherethe display device 260 is in a display-off active state) (block 404).

Input from one or more sensors is detected (block 406). For example, theaccelerometer(s) 272 can detect vibrations (or a change in vibrations orvibration patterns) occurring in an ambient environment of the computingdevice 200. The detected vibrations can be indicative of footsteps inthe vicinity of the computing device 200, such as those of the user 302approaching the computing device 200 as shown in FIG. 3C. In anotherexample, the proximity sensor(s) 279 can detect a proximity of the user302 to the computing device 200. The computing device 200 usinginformation and data provided by the accelerometer(s) 272 and theproximity sensor(s) 279 can trigger a wakeup operation.

As part of the wakeup operation, the detected input/information can beprovided to a power manager. For example, the accelerometer(s) 272 andthe proximity sensor(s) 279 can provide information and data to thepower manager 225. As part of selecting the next power state for thecomputing device 200, the power manager 225 may obtain information fromthe activity monitor 245 and/or the RTC 210. The power manager 225 canuse the detected vibrations sensed by the accelerometer(s) 272 and theproximity information and data indicative of the proximity of the user302 sensed by the proximity sensor(s) 279 in combination with a currentday and time of day (e.g., Monday morning at 7:00 am) and user providedinformation 247 included in the activity monitor 245 to determine thenext power state for the computing device 200. For example, the powermanager 225 can determine that since it is Monday morning at 7:00 am andthe user 302 is approaching/moving towards the computing device 200 thatthe user 302 would like to view content (e.g., the content 308) on thedisplay device 260 of the computing device 200. This determination canfurther be based on past interactions of the user 302 with the computingdevice 200 that can be included in the user provided information 247 inthe activity monitor 245.

At least one application to launch on the computing device is identifiedbased on the detected input and on a heuristic-based usage pattern forthe computing device (block 408). The computing device is transitionedto a second power state (e.g., an active power state) based on thedetected input/information (block 410). For example, if informationincluded in the activity monitor 245 (e.g., usage patterns and/or theuser provided information 247) and/or information from the RTC 210(e.g., day of week and/or time of day) indicates that it is likely thatthe user 302 may want to use the computing device 200, the power manager225 may initiate a transition of the computing device from a hibernationmode or a sleep mode to an active power state. For example, the powermanager 225 can determine that since it is Monday morning at 7:00 am andthe user 302 is approaching/moving towards the computing device 200 thatthe user 302 would like to view content (e.g., the content 308) on thedisplay device 260 of the computing device 200. The computing device 200can then be woken up and placed in the active power state.

The computing device automatically initiates/launches one or moreapplications on the computing device based on the transition from thefirst power state to the second power state. The one or moreapplications provide content for display on a display device included inthe computing device. For example, the computing device 200 can providethe content 308 for display on the display device 260. The content 308can include information that the user 302 is interested in seeing(having display on the display device 260) when the computing device 200is transitioned from a low power state to an active power state. Theselection/determination of items 310 a-e for inclusion in the content308 can be based on the usage pattern data/information for the computingdevice 200 included in the activity monitor 245.

In the non-limiting example shown in FIG. 3C, the content 308 includes acurrent date and time item 310 a. The RTC 210 can provide the date andtime information. The content 308 includes a current weather conditionsitem 310 b for a city identified as the current location of thecomputing device 200. The location sensor(s) 275 can provide locationinformation to a weather application launched by the computing device200. The weather application can determine the current weatherconditions for the provided location for display on the display device260. The content 308 can include appointment/meeting information item310 c. The computing device 200 can launch a calendar application. TheRTC 210 can provide the current date to the calendar application. Thecalendar application can determine appointments and meetings included inan electronic calendar for the provided date. The computing device 200can display the appointment/meeting information item 310 c in thecontent 308. The content 308 can include a latest local sports news item310 d and a latest national news item 310 e. The computing device 200can launch a sports news application and/or a national news application.The location sensor(s) 275 can provide location information to the newsapplications launched by the computing device 200. The news applicationscan determine the latest local sports news item 310 d and the latestnational news item 310 e for inclusion in the content 308 for display onthe display device 260.

Alternatively, the user may touch the computing device 200 (e.g., pickup the computing device 200, hold the computing device 200, squeeze thecomputing device 200). In these cases, the touch sensor(s) 281 candetect the contact of the user with the computing device 200. Inaddition or in the alternative, the user can interact with thebiosensor(s) 276 when contacting the computing device 200. The computingdevice 200 can automatically wake up (exit a low power state and enteran active power state) and automatically initiate/launch one or moreapplications on the computing device 200. The computing device 200 cantherefore be immediately ready for use by the user. In addition, or inthe alternative, the display device 260 included in the computing device200 can display information to the user provided by the launched one ormore applications.

For example, the computing device 200 can automatically wake up, andlaunch an email application, a news service application, and a horoscopeapplication. As described with reference to FIG. 2, the applications canbe native applications 290, natively operating applications 285, or webapplications 265.

In some implementations, the power manager 225 can be configured tooperate in conjunction with the timer 215 (as well as using otherinformation) when selecting power states for the computing device 200.The sensors 270 can detect one or more events and provide informationregarding the detected events to the power manager 225. For example, thelight sensor 273 can detect a change in light intensity in an ambientenvironment of the computing device 200 (e.g., such as office lightsbeing turned on. The light sensor 273 can provide the data/informationrepresentative of the change to the power manager 225. The power manager225 can determine, based on usage pattern data/information included inthe activity monitor 245 and day and time information from the RTC 210,that a user typically uses the computing device 200 approximately thirtyminutes after such an event occurs on a particular day of the week andat a particular time during the day.

As a result of this determination, the power manager 225 can set thetimer 215 to initiate a transition of the computing device 200 from alow power state to an active power state twenty-five minutes after thedetection of the change in light intensity. In addition, the powermanager 225 can launch/initiate one or more applications on thecomputing device 200. For example, the power manager 225 can determine,based on usage pattern data/information included in the activity monitor245, that once the computing device 200 wakes up, the user checks emailand the latest stock prices. The computing device 200 can launch anemail application where the computing device 200, using thecommunications module 233, can connect to an email server and downloadany email messages for the user to the computing device 200. Inaddition, the computing device 200 can launch a stock market monitoringapplication. Such an approach allows the user to begin using thecomputer after the power state transition is complete, without having tofirst interact with the computing device 200 to initiate the power statetransition and then interact with the computing device 200 again tolaunch the applications.

In a first example, the computing device 200 can be a laptop computer(e.g., the computing device 102 a in FIG. 1). A user, before going tobed, closes the laptop computer that is on a desk (e.g., a lid of thelaptop computer is rotated/moved to make contact with a base of thelaptop computer). The accelerometer(s) 272 included in the laptopcomputer can determine that the laptop computer is in a closed position.Based on determining that the laptop is in a closed position, the laptopcan enter a low power mode (e.g., a sleep mode). In addition, the laptopcomputer can determine, based on the lack of any additionaldata/information from the accelerometer(s) 272 as well as the inputdevice(s) 250, the motion sensor(s) 278, the proximity sensor(s), andthe touch sensor(s) 281 for a period of time (e.g., one hour asdetermined by a time of day clock included in the laptop computer), thatthe laptop computer has remained stationary (not moved). Based on thiscontextual information, the laptop computer can enter an even lowerpower mode (e.g., a hibernation mode).

In a second example, at a particular time in the morning (e.g., 6:00 amas determined by a time of day clock included in the laptop computer)while the laptop computer is still in a hibernation mode, and before theuser otherwise touches, moves, or interacts with the laptop computer,the laptop computer can partially wake-up (e.g., enter a display-offactive state) where the laptop computer, for example, connects to anavailable network and downloads email and other electronic informationfor the user onto the laptop computer. The particular time in themorning when the laptop computer partially wakes up can be determinedbased on a record of prior interactions of the user with the laptopcomputer that can be included in the usage pattern data/information forthe computing device 200 included in the activity monitor 245. Forexample, when the user wakes up they check their email at approximately6:30 am most mornings. In this example, when the user opens the laptopcomputer to check email at approximately 6:30 am, the email files andmessages are already downloaded to the laptop computer and ready forviewing, enhancing the user's experience with the laptop computer.

In a third example, a user takes the laptop computer off the desk in theclosed position, places the laptop computer in a carrying case, andleaves for the office. When the user arrives at work, they first checktheir email before starting the workday. In this case, a light sensor onthe laptop computer can detect a lack of light (an indication of thelaptop computer being placed in the carrying case) and theaccelerometer(s) 272 and/or the motion sensor(s) 278 can detect themovement of the laptop computer and/or the orientation of the laptopcomputer (e.g., placed vertically within the carrying case). Based onthe sensor data, the laptop computer can partially wake-up (e.g., entera display-off active state) where the laptop computer, for example,connects to an available network and downloads email and otherelectronic information for the user onto the laptop computer. In thisexample, when the user opens the laptop computer when they arrive at theoffice to check email and begin the workday, the email files andmessages are already downloaded to the laptop computer and ready forviewing, enhancing the user's experience with the laptop computer.

In a fourth example, the user closes the laptop computer, picks up thelaptop computer in the closed position, and walks to a conference roomfor a meeting. The accelerometer(s) 272 included in the computing device200 can determine that the laptop computer is in a closed position.Based on determining that the computing device 200 is in a closedposition, the computing device 200 can enter a low power mode (e.g., asleep mode). In addition, the accelerometer(s) 272 and/or the motionsensor(s) 278 can detect the movement of the computing device 200. Insome cases, the location sensor(s) 275 can detect a change in locationof the computing device 200. As the user is walking, computing device200 can launch a calendar application and determine that the user has ameeting. Based on this information, the computing device 200 canlaunch/initiate additional applications on the computing device 200 thatthe user may interact with in order to participate in and/or conduct themeeting (e.g., a presentation application, a note-taking application, avideo conferencing application, etc.). When the user arrives to theconference room, the user can open the laptop computer. The laptopcomputer can enter an active power state with the application(s) runningand ready for use by the user.

In a fifth example, the computing device 200 can be a desktop computingdevice (e.g., the computing device 102 d in FIG. 1). A user leaves anoffice in the evening, leaving the computing device 200 in the office.One or more sensors on the computing device 200 can determine that theuser has left the office. For example, the light sensor 273 detects lowor no light (the user has turned the office light off) and the RTC 210determines that the detected low light condition is for a certain periodof time. In addition or in the alternative, the proximity sensor(s) 279does not detect proximity of a user. Based on determining that the userhas left the office, the computing device 200 enters a low power mode(e.g., a sleep mode, a hibernate mode).

When the user returns to the office the next day, the proximitysensor(s) 279 senses the proximity of the user to the computing device200 (e.g., the user sits down at a desk where the computing device 200is located). In addition or in the alternative, the accelerometer(s) 272can detect vibrations (or a change in vibrations or vibration patterns)occurring in an ambient environment of the computing device 200. Thedetected vibrations can be indicative of footsteps in the vicinity ofthe computing device 200, such as those of a user approaching thecomputing device 200. In addition or in the alternative, the lightsensor 273 detects increased ambient light (the user has turned theoffice light on.) The computing device 200, based on detecting some orall of the contextual information, wakes up (enters an active powerstate) and begins to perform operations in preparation for anticipateduser interactions with the computing device 200. For example, thecomputing device 200 connects to an available network and synchronizesdata and applications with the network in preparation for the userinteracting with the data and applications.

In a sixth example, the computing device 200 can be a mobile computingdevice (e.g., the computing device 102 c in FIG. 1). A user places themobile computing device on a flat surface (e.g., on a desk, on a table,an end table) before going to bed. The accelerometer(s) 272 included inthe computing device 200 can determine that the computing device 200 isin a flat, stationary position. In addition, the computing device 200can use the RTC 210 to determine the time of day (e.g., 11:00 pm). Inaddition or in the alternative, the computing device 200 can determine,based on the lack of any additional data/information from the inputdevice(s) 250, the motion sensor(s) 278, the proximity sensor(s), andthe touch sensor(s) 281 that the computing device 200 is n a stationaryposition.

Based on a record of prior interactions of a user with the computingdevice 200 (information included in the activity monitor 245 (e.g.,usage patterns and/or the user provided information 247)), the computingdevice 200 can automatically enter a predetermined operating state. Forexample, the computing device 200 can enter a low power state (e.g., asleep mode, a hibernate mode) and be placed into a quiet mode (e.g.,audible indicators are silenced). The predetermined operating state canbe an operating state that the user may have selectively entered whenthe computing device 200 was in the particular context and/or operatingstate.

The user wakes up in the morning and approaches the computing device200. The proximity sensor(s) 279 can detect the proximity of the user.Alternatively, the user may otherwise touch the computing device 200(e.g., pick up the computing device 200, hold the computing device 200,squeeze the computing device 200). The touch sensor(s) 281 can detectthe contact of the user with the computing device 200. The computingdevice 200 can automatically wake up (exit the low power state and entera full power state) and be ready for use by the user. In addition, or inthe alternative, the display device 260 included in the computing device200 can display information to the user.

In a seventh example, the computing device 200 can be a mobile computingdevice (e.g., the computing device 102 c in FIG. 1). The motionsensor(s) 278 can detect a user walking/running and based on thedetection, the computing device 200, if in a low power state, can wakeup and launch/initiate an application on the computing device 200 thatcan track a progress of a user as the walk/run. In addition or in thealternative, the computing device 200 can interface with one or morebiosensor(s) 276 that can provide a heart rate indication for the useras they walk/run.

In an eighth example, a user can provide voice commands to a computingdevice (e.g., the computing device 200). A speaker included in the audiosystem 220 can receive the voice commands/input and can initiate anaction on the computing device 200 based on the interpreted voicecommands. For example, the user can use voice commands to activate acamera included in the computing device 200. In another example, voicecommands/input can be used to enter information into an applicationrunning on the computing device 200 (e.g., a new appointment added to acalendar application, a new task added to a task managementapplication).

FIG. 5 shows an example of a generic computer device 500 and a genericmobile computer device 550, which may be used with the techniquesdescribed here. Computing device 500 is intended to represent variousforms of digital computers, such as laptops, desktops, workstations,personal digital assistants, servers, blade servers, mainframes, andother appropriate computers. Computing device 550 is intended torepresent various forms of mobile devices, such as personal digitalassistants, cellular telephones, smart phones, and other similarcomputing devices. The components shown here, their connections andrelationships, and their functions, are meant to be exemplary only, andare not meant to limit implementations of the inventions describedand/or claimed in this document.

Computing device 500 includes a processor 502, memory 504, a storagedevice 506, a high-speed interface 508 connecting to memory 504 andhigh-speed expansion ports 510, and a low speed interface 512 connectingto low speed bus 514 and storage device 506. Each of the components 502,504, 506, 508, 510, and 512, are interconnected using various busses,and may be mounted on a common motherboard or in other manners asappropriate. The processor 502 can process instructions for executionwithin the computing device 500, including instructions stored in thememory 504 or on the storage device 506 to display graphical informationfor a GUI on an external input/output device, such as display 516coupled to high speed interface 508. In other implementations, multipleprocessors and/or multiple buses may be used, as appropriate, along withmultiple memories and types of memory. Also, multiple computing devices500 may be connected, with each device providing portions of thenecessary operations (e.g., as a server bank, a group of blade servers,or a multi-processor system).

The memory 504 stores information within the computing device 500. Inone implementation, the memory 504 is a volatile memory unit or units.In another implementation, the memory 504 is a non-volatile memory unitor units. The memory 504 may also be another form of computer-readablemedium, such as a magnetic or optical disk.

The storage device 506 is capable of providing mass storage for thecomputing device 500. In one implementation, the storage device 506 maybe or contain a computer-readable medium, such as a floppy disk device,a hard disk device, an optical disk device, or a tape device, a flashmemory or other similar solid state memory device, or an array ofdevices, including devices in a storage area network or otherconfigurations. A computer program product can be tangibly embodied inan information carrier. The computer program product may also containinstructions that, when executed, perform one or more methods, such asthose described above. The information carrier is a computer- ormachine-readable medium, such as the memory 504, the storage device 506,or memory on processor 502.

The high speed controller 508 manages bandwidth-intensive operations forthe computing device 500, while the low speed controller 512 manageslower bandwidth-intensive operations. Such allocation of functions isexemplary only. In one implementation, the high-speed controller 508 iscoupled to memory 504, display 516 (e.g., through a graphics processoror accelerator), and to high-speed expansion ports 510, which may acceptvarious expansion cards (not shown). In the implementation, low-speedcontroller 512 is coupled to storage device 506 and low-speed expansionport 514. The low-speed expansion port, which may include variouscommunication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet)may be coupled to one or more input/output devices, such as a keyboard,a pointing device, a scanner, or a networking device such as a switch orrouter, e.g., through a network adapter.

The computing device 500 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as astandard server 520, or multiple times in a group of such servers. Itmay also be implemented as part of a rack server system 524. Inaddition, it may be implemented in a personal computer such as a laptopcomputer 522. Alternatively, components from computing device 500 may becombined with other components in a mobile device (not shown), such asdevice 550. Each of such devices may contain one or more of computingdevice 500, 550, and an entire system may be made up of multiplecomputing devices 500, 550 communicating with each other.

Computing device 550 includes a processor 552, memory 564, aninput/output device such as a display 554, a communication interface566, and a transceiver 568, among other components. The device 550 mayalso be provided with a storage device, such as a microdrive or otherdevice, to provide additional storage. Each of the components 550, 552,564, 554, 566, and 568, are interconnected using various buses, andseveral of the components may be mounted on a common motherboard or inother manners as appropriate.

The processor 552 can execute instructions within the computing device550, including instructions stored in the memory 564. The processor maybe implemented as a chipset of chips that include separate and multipleanalog and digital processors. The processor may provide, for example,for coordination of the other components of the device 550, such ascontrol of user interfaces, applications run by device 550, and wirelesscommunication by device 550.

Processor 552 may communicate with a user through control interface 558and display interface 556 coupled to a display 554. The display 554 maybe, for example, a TFT LCD (Thin-Film-Transistor Liquid Crystal Display)or an OLED (Organic Light Emitting Diode) display, or other appropriatedisplay technology. The display interface 556 may comprise appropriatecircuitry for driving the display 554 to present graphical and otherinformation to a user. The control interface 558 may receive commandsfrom a user and convert them for submission to the processor 552. Inaddition, an external interface 562 may be provide in communication withprocessor 552, so as to enable near area communication of device 550with other devices. External interface 562 may provide, for example, forwired communication in some implementations, or for wirelesscommunication in other implementations, and multiple interfaces may alsobe used.

The memory 564 stores information within the computing device 550. Thememory 564 can be implemented as one or more of a computer-readablemedium or media, a volatile memory unit or units, or a non-volatilememory unit or units. Expansion memory 574 may also be provided andconnected to device 550 through expansion interface 572, which mayinclude, for example, a SIMM (Single In Line Memory Module) cardinterface. Such expansion memory 574 may provide extra storage space fordevice 550, or may also store applications or other information fordevice 550. Specifically, expansion memory 574 may include instructionsto carry out or supplement the processes described above, and mayinclude secure information also. Thus, for example, expansion memory 574may be provide as a security module for device 550, and may beprogrammed with instructions that permit secure use of device 550. Inaddition, secure applications may be provided via the SIMM cards, alongwith additional information, such as placing identifying information onthe SIMM card in a non-hackable manner.

The memory may include, for example, flash memory and/or NVRAM memory,as discussed below. In one implementation, a computer program product istangibly embodied in an information carrier. The computer programproduct contains instructions that, when executed, perform one or moremethods, such as those described above. The information carrier is acomputer- or machine-readable medium, such as the memory 564, expansionmemory 574, or memory on processor 552, that may be received, forexample, over transceiver 568 or external interface 562.

Device 550 may communicate wirelessly through communication interface566, which may include digital signal processing circuitry wherenecessary. Communication interface 566 may provide for communicationsunder various modes or protocols, such as GSM voice calls, SMS, EMS, orMMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, among others.Such communication may occur, for example, through radio-frequencytransceiver 568. In addition, short-range communication may occur, suchas using a Bluetooth, WiFi, or other such transceiver (not shown). Inaddition, GPS (Global Positioning System) receiver module 570 mayprovide additional navigation- and location-related wireless data todevice 550, which may be used as appropriate by applications running ondevice 550.

Device 550 may also communicate audibly using audio codec 560, which mayreceive spoken information from a user and convert it to usable digitalinformation. Audio codec 560 may likewise generate audible sound for auser, such as through a speaker, e.g., in a handset of device 550. Suchsound may include sound from voice telephone calls, may include recordedsound (e.g., voice messages, music files, etc.) and may also includesound generated by applications operating on device 550.

The computing device 550 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as acellular telephone 580. It may also be implemented as part of a smartphone 582, personal digital assistant, or other similar mobile device.

Various implementations of the systems and techniques described here canbe realized in digital electronic circuitry, integrated circuitry,specially designed ASICs (application specific integrated circuits),computer hardware, firmware, software, and/or combinations thereof.These various implementations can include implementation in one or morecomputer programs that are executable and/or interpretable on aprogrammable system including at least one programmable processor, whichmay be special or general purpose, coupled to receive data andinstructions from, and to transmit data and instructions to, a storagesystem, at least one input device, and at least one output device.

These computer programs (also known as programs, software, softwareapplications or code) include machine instructions for a programmableprocessor, and can be implemented in a high-level procedural and/orobject-oriented programming language, and/or in assembly/machinelanguage. As used herein, the terms “machine-readable medium”“computer-readable medium” refers to any computer program product,apparatus and/or device (e.g., magnetic discs, optical disks, memory,Programmable Logic Devices (PLDs)) used to provide machine instructionsand/or data to a programmable processor, including a machine-readablemedium that receives machine instructions as a machine-readable signal.The term “machine-readable signal” refers to any signal used to providemachine instructions and/or data to a programmable processor.

To provide for interaction with a user, the systems and techniquesdescribed here can be implemented on a computer having a display device(e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor)for displaying information to the user and a keyboard and a pointingdevice (e.g., a mouse or a trackball) by which the user can provideinput to the computer. Other kinds of devices can be used to provide forinteraction with a user as well; for example, feedback provided to theuser can be any form of sensory feedback (e.g., visual feedback,auditory feedback, or tactile feedback); and input from the user can bereceived in any form, including acoustic, speech, or tactile input.

The systems and techniques described here can be implemented in acomputing system that includes a back end component (e.g., as a dataserver), or that includes a middleware component (e.g., an applicationserver), or that includes a front end component (e.g., a client computerhaving a graphical user interface or a Web browser through which a usercan interact with an implementation of the systems and techniquesdescribed here), or any combination of such back end, middleware, orfront end components. The components of the system can be interconnectedby any form or medium of digital data communication (e.g., acommunication network). Examples of communication networks include alocal area network (“LAN”), a wide area network (“WAN”), and theInternet.

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

In situations in which the systems and methods discussed herein collectpersonal information about users, or may make use of personalinformation, the users may be provided with an opportunity to controlwhether programs or features collect user information (e.g., informationabout a user's social network, social actions or activities, profession,a user's preferences, or a user's current location), or to controlwhether and/or how to receive content from the content server that maybe more relevant to the user. In addition, certain data may be treatedin one or more ways before it is stored or used, so that personallyidentifiable information is removed. For example, a user's identity maybe treated so that no personally identifiable information can bedetermined for the user, or a user's geographic location may begeneralized where location information is obtained (such as to a city,ZIP code, or state level), so that a particular location of a usercannot be determined. Thus, the user may have control over howinformation is collected about the user and used by a content server.

A number of embodiments have been described. Nevertheless, it will beunderstood that various modifications may be made without departing fromthe spirit and scope of the invention.

In addition, the logic flows depicted in the figures do not require theparticular order shown, or sequential order, to achieve desirableresults. In addition, other steps may be provided, or steps may beeliminated, from the described flows, and other components may be addedto, or removed from, the described systems. Accordingly, otherembodiments are within the scope of the following claims.

What is claimed is:
 1. A method comprising: determining that a computingdevice satisfies criteria, the criteria including: the computing devicebeing placed in a stationary position, a usage pattern associated withthe computing device, and a prediction of no user interaction based onthe usage pattern and a time of day; operating the computing device in adowntime mode based on the computing device satisfying the criteria, andsynchronizing data included in the computing device with data includedon a remote server during the downtime mode; transitioning the computingdevice to an active power state; and launching an application on thecomputing device based on the synchronized data after the transitioning.2. The method of claim 1, wherein the synchronizing of the data includesdownloading email messages.
 3. The method of claim 1, wherein the usagepattern includes a user not interacting with the computing device duringthe time of day.
 4. The method of claim 1, wherein the usage patternincludes a lack of input into one or more sensors included in thecomputing device.
 5. The method of claim 1, wherein the criteria furtherinclude no input to the computing device being detected for apredetermined time.
 6. The method of claim 1, wherein: the active powerstate comprises a next active power state; and the method furthercomprises determining that the computing device is operating in anactive power state, before determining that the computing devicesatisfies the criteria, based on determining that input to the computingdevice has been detected during a predetermined time.
 7. The method ofclaim 1, wherein synchronizing data included in the computing devicewith data included on the remote server is in preparation foruser-interactions with the data included in the computing device.
 8. Anon-transitory, machine-readable medium having instructions storedthereon, the instructions, when executed by a processor, beingconfigured to cause a computing device to: determine that the computingdevice satisfies criteria, the criteria including: the computing devicebeing placed in a stationary position, a usage pattern associated withthe computing device, and a prediction of no user interaction based onthe usage pattern and a time of day; operate the computing device in adowntime mode based on the computing device satisfying the criteria, andsynchronize data included in the computing device with data included ona remote server during the downtime mode; transition the computingdevice to an active power state; and launch an application on thecomputing device based on the synchronized data after the transitioning.9. The medium of claim 8, wherein the synchronizing of the data includesdownloading email messages.
 10. The medium of claim 8, wherein the usagepattern includes a user not interacting with the computing device duringthe time of day.
 11. The medium of claim 8, wherein the usage patternincludes a lack of input into one or more sensors included in thecomputing device.
 12. The medium of claim 8, wherein the criteriafurther include no input to the computing device being detected for apredetermined time.
 13. The medium of claim 8, wherein: the active powerstate comprises a next active power state; and the instructions arefurther configured to cause the computing device to determine that thecomputing device is operating in an active power state based on thecomputing device determining that input to the computing device has beendetected during a predetermined time.
 14. The medium of claim 8, whereinsynchronizing data included in the computing device with data includedon the remote server is in preparation for user-interactions with thedata included in the computing device.
 15. A computing devicecomprising: a power manager configured to: determine that the computingdevice satisfies criteria, the criteria including: the computing devicebeing placed in a stationary position, a usage pattern associated withthe computing device, and a prediction of no user interaction based onthe usage pattern and a time of day; and transition the computing deviceto an active power state; and a communications module configured tofacilitate communications between the computing device and a remoteserver, the communications synchronizing data included in the computingdevice with data included on the remote server while the computingdevice is operating in a downtime mode based on the computing devicesatisfying the criteria, the synchronizing of the data includingreceiving the synchronized data from the remote server, wherein thepower manager is further configured to launch an application based onthe received synchronized data after transitioning the computing deviceto the active power state.
 16. The computing device of claim 15, whereinthe usage pattern includes a user not interacting with the computingdevice during the time of day.
 17. The computing device of claim 15,wherein the usage pattern includes a lack of input into one or moresensors included in the computing device.
 18. The computing device ofclaim 15, wherein the criteria further include no input to the computingdevice being detected for a predetermined time.
 19. The computing deviceof claim 15, wherein: the active power state comprises a next activepower state; and the power manager is further configured to determinethat the computing device is operating in an active power state based ondetermining that input to the computing device has been detected duringa predetermined time.
 20. The computing device of claim 15, whereinsynchronizing data included in the computing device with data includedon the remote server is in preparation for user-interactions with thedata included in the computing device.